//package com.zzh.partnersys;
//import java.time.LocalDateTime;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.concurrent.CompletableFuture;
//
//import com.zzh.partnersys.entity.UserDO;
//import com.zzh.partnersys.mapper.UserMapper;
//import com.zzh.partnersys.service.UserService;
//import org.junit.jupiter.api.Test;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//
//import javax.annotation.Resource;
//
///**
// * @author 张 志 豪
// * @version 1.0
// * 插入百万条数据测试类
// */
//@SpringBootTest
//public class InsertDataMillion {
//
//    @Resource
//    private UserMapper userMapper;
//
//    @Autowired
//    private UserService userService;
//
//    //直接普通循环插入10000条
//    @Test
//    public void insertData10000OneFor(){//时间：22453
//        long start = System.currentTimeMillis();
//        for (int i = 0; i < 10000; i++) {
//            UserDO user = new UserDO();
//            user.setUsername("无敌的小子");
//            user.setUserAccount("112421494");
//            user.setAvatarUrl("https://imagemanagerzkc.oss-cn-beijing.aliyuncs.com/headIcon/21d30c8ffd554f0b961a322ecc3772abhead5.png");
//            user.setGender(0);
//            user.setUserPassword("1492189085901");
//            user.setPhone("12312401904");
//            user.setEmail("42141980@qq.com");
//            user.setUserStatus(0);
//            user.setPlanetCode("1245467");
//            user.setTags("['java','c++','python']");
//            user.setPersonalProfile("我杀我i爱费劲哦十几个日哦高频考点松开v没");
//            userMapper.insert(user);
//        }
//
//        long end = System.currentTimeMillis();
//        System.out.println("普通for用时: " + (end - start));
//    }
//
//
//    //批量插入(减少数据库的连接)
//    //时间：3491  =>分批量插入(20一组)  10000条
//    //时间：3020  =>分批量插入(25一组)  10000条
//    //时间：2662  =>分批量插入(30一组)  10000条
//    //时间：2881  =>分批量插入(32一组)  10000条
//    //时间：2906  =>分批量插入(35一组)  10000条
//    //时间：3101  =>分批量插入(40一组)  10000条
//    //时间：10598  =>分批量插入(40一组)  50000条
//    //时间：10831  =>分批量插入(20一组)  50000条
//    //时间：17048、17046  =>分批量插入(20一组)  100000条
//    //时间：16529  =>分批量插入(30一组)  100000条
//    @Test
//    public void insertData10000ForAndBatch(){
//        long start = System.currentTimeMillis();
//        List<UserDO> userList = new ArrayList<>();
//        for (int i = 0; i < 100000; i++) {
//            UserDO user = new UserDO();
//            user.setUsername("无敌的小子");
//            user.setUserAccount("112421494");
//            user.setAvatarUrl("https://imagemanagerzkc.oss-cn-beijing.aliyuncs.com/headIcon/headIcon/97527e350dbe45b5b5c7fdce2acbb691defaultHead.png");
//            user.setGender(0);
//            user.setUserPassword("1492189085901");
//            user.setPhone("12312401904");
//            user.setEmail("42141980@qq.com");
//            user.setUserStatus(0);
//            user.setPlanetCode("1245467");
//            user.setTags("['java','c++','python','初级','']");
//            user.setPersonalProfile("我杀我i爱费劲哦十几个日哦高频考点松开v没");
//            userList.add(user);
//        }
//        userService.saveBatch(userList,30);
//
//        long end = System.currentTimeMillis();
//        System.out.println("批次插入  " + (end - start));
//    }
//
//
//    //多线程(异步) + 批次插入  10000条  5000条为一个线程操作  *  20 个异步执行
//    //时间：4862 10000条
//    //时间：4895 10000条  5000条为一个线程操作  *  20 个异步执行  一个线程 20 批次插入
//    @Test
//    public void insertData10000ForAndBatchAndMoreThread(){
//        long start = System.currentTimeMillis();
//
//        //5000条为一个线程操作
//        int j = 0;
//        List<CompletableFuture<Void>> futureList = new ArrayList<>();
//        int batchSize = 5000;
//        for (int i = 0; i < 20; i++) {
//            List<UserDO> userList = new ArrayList<>();
//            while (true){
//                j++;
//                UserDO user = new UserDO();
//                user.setUsername("无敌的小子");
//                user.setUserAccount("112421494");
//                user.setAvatarUrl("https://imagemanagerzkc.oss-cn-beijing.aliyuncs.com/headIcon/headIcon/97527e350dbe45b5b5c7fdce2acbb691defaultHead.png");
//                user.setGender(0);
//                user.setUserPassword("1492189085901");
//                user.setPhone("12312401904");
//                user.setEmail("42141980@qq.com");
//                user.setUserStatus(0);
//                user.setPlanetCode("1245467");
//                user.setTags("['java','c++','python','初级','']");
//                user.setPersonalProfile("我杀我i爱费劲哦十几个日哦高频考点松开v没");
//                userList.add(user);
//                if (j % batchSize == 0){
//                    break;
//                }
//            }
//            //异步任务指定
//            CompletableFuture<Void> future = CompletableFuture.runAsync(()->{
//                System.out.println("threadName: " + Thread.currentThread().getName());
//                userService.saveBatch(userList,20);
//            });//默认jdk的线程池
//            futureList.add(future);
//        }
//        //执行任务
//        CompletableFuture.allOf(futureList.toArray(new CompletableFuture[]{})).join();
//        long end = System.currentTimeMillis();
//        System.out.println("多线程(异步) + 批次插入  " + (end - start));
//    }
//
//
//
//}
